/**
 * 日期时间工具函数
 */

/**
 * 格式化日期时间为后端接受的格式
 * @param {Date|string} date - 日期对象或日期字符串
 * @returns {string|null} 格式化后的日期时间字符串 (yyyy-MM-dd HH:mm:ss)
 */
export const formatDateTimeForBackend = (date) => {
  if (!date) return null
  const d = new Date(date)
  if (isNaN(d.getTime())) return null
  
  return d.getFullYear() + '-' +
    (d.getMonth() + 1).toString().padStart(2, '0') + '-' +
    d.getDate().toString().padStart(2, '0') + ' ' +
    d.getHours().toString().padStart(2, '0') + ':' +
    d.getMinutes().toString().padStart(2, '0') + ':' +
    d.getSeconds().toString().padStart(2, '0')
}

/**
 * 格式化日期时间为显示格式
 * @param {Date|string} dateTime - 日期时间
 * @returns {string} 格式化后的日期时间字符串
 */
export const formatDateTime = (dateTime) => {
  if (!dateTime) return '-'
  const date = new Date(dateTime)
  if (isNaN(date.getTime())) return '-'
  
  return date.toLocaleString('zh-CN', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit'
  })
}

/**
 * 格式化日期为显示格式
 * @param {Date|string} date - 日期
 * @returns {string} 格式化后的日期字符串
 */
export const formatDate = (date) => {
  if (!date) return '-'
  const d = new Date(date)
  if (isNaN(d.getTime())) return '-'
  
  return d.toLocaleDateString('zh-CN')
}

/**
 * 获取当前时间的格式化字符串
 * @returns {string} 当前时间的格式化字符串
 */
export const getCurrentDateTime = () => {
  return formatDateTimeForBackend(new Date())
}

/**
 * 解析后端返回的日期时间字符串
 * @param {string} dateTimeStr - 后端返回的日期时间字符串
 * @returns {Date|null} 解析后的Date对象
 */
export const parseDateTime = (dateTimeStr) => {
  if (!dateTimeStr) return null
  const date = new Date(dateTimeStr)
  return isNaN(date.getTime()) ? null : date
}
